//
// Created by ChaoDONG on 2021-03-17.
//


/* convert.c -- automatic type conversions */
/* convert.c -- 自动类型转换 */
#include <stdio.h>

int main(void){

    char ch;

    int i;

    float fl;

    fl = i = ch = 'C'; /* line 9 */

    printf("ch = %c, i = %d, fl = %2.2f\n", ch, i, fl); /* line 10 */
    /* 第9行和第10行：字符'C'被作为1字节的ASCII值储存在ch中。
     * 整数变量i接受由'C'转换的整数，即按4字节储存67*/

    ch = ch + 1; /* line 11 */

    i = fl + 2 * ch; /* line 12 */

    fl = 2.0 * ch + i; /* line 13 */

    printf("ch = %c, i = %d, fl = %2.2f\n",
           ch, i, fl); /* line 14 */
    /* 第11行和第14行：字符变量'C'被转换成整数67，然后加1。计算结果是4
     字节整数68，被截断成1字节储存在ch中。 */

    ch = 1107; /* line 15 */

    printf("Now ch = %c\n",
           ch); /* line 16 */
    /* 第15行和第16行：演示了类型降级的示例。把ch设置为一个超出其类型
     范围的值，忽略额外的位后，最终ch的值是字符S的ASCII码。或者，更确切
     地说，ch的值是1107 % 265，即83。*/

    ch = 80.89; /* line 17 */

    printf("Now ch = %c\n",
           ch); /* line 18 */
    /* 第17行和第18行：演示了另一个类型降级的示例。把ch设置为一个浮点数，
     * 发生截断后，ch的值是字符P的ASCII码。*/

    return 0;
}